Have these return TRUE
authorAnders Carlsson <andersca@imendio.com>
Mon, 2 Jan 2006 16:34:21 +0000 (16:34 +0000)
committerAnders Carlsson <andersca@src.gnome.org>
Mon, 2 Jan 2006 16:34:21 +0000 (16:34 +0000)
2006-01-02  Anders Carlsson  <andersca@imendio.com>

        * gdk/quartz/GdkQuartzWindow.c:
        (-[GdkQuartzWindow canBecomeMainWindow]):
        (-[GdkQuartzWindow canBecomeKeyWindow]):
        Have these return TRUE

        * gdk/quartz/gdkevents-quartz.c:
        (pointer_grab_internal):
        Remove FIXME

        (find_child_window_by_point_helper):
        Fix bug in offset calculation

        (find_window_for_event):
        Use grab window toplevel when a grab is in effect

        (gdk_event_translate):
        Don't call _gdk_event_button_generate on mouse up

        * gdk/quartz/gdkgc-quartz.c:
        (_gdk_quartz_gc_new):
        Fix indentation

        * gdk/quartz/gdkwindow-quartz.c:
        (gdk_window_new):
        Make TEMP windows borderless

        (gdk_window_hide):
        Hide window

        (gdk_window_get_origin):
        Implement

ChangeLog
ChangeLog.pre-2-10
gdk/quartz/GdkQuartzWindow.c
gdk/quartz/gdkevents-quartz.c
gdk/quartz/gdkgc-quartz.c
gdk/quartz/gdkwindow-quartz.c

index 712286122f1e17328a3ce3e904f8e278a1b80b81..b3dee4edf2fbeb897b8ff38c4dea998ac024125d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+2006-01-02  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/GdkQuartzWindow.c:
+        (-[GdkQuartzWindow canBecomeMainWindow]):
+        (-[GdkQuartzWindow canBecomeKeyWindow]):
+        Have these return TRUE
+        
+        * gdk/quartz/gdkevents-quartz.c:
+        (pointer_grab_internal):
+        Remove FIXME
+        
+        (find_child_window_by_point_helper):
+        Fix bug in offset calculation
+        
+        (find_window_for_event):
+        Use grab window toplevel when a grab is in effect
+        
+        (gdk_event_translate):
+        Don't call _gdk_event_button_generate on mouse up
+        
+        * gdk/quartz/gdkgc-quartz.c:
+        (_gdk_quartz_gc_new):
+        Fix indentation
+        
+        * gdk/quartz/gdkwindow-quartz.c:
+        (gdk_window_new):
+        Make TEMP windows borderless
+        
+        (gdk_window_hide):
+        Hide window
+        
+        (gdk_window_get_origin):
+        Implement
+        
 2006-01-02  Tor Lillqvist  <tml@novell.com>
 
        * gdk/win32/gdkwindow-win32.c
index 712286122f1e17328a3ce3e904f8e278a1b80b81..b3dee4edf2fbeb897b8ff38c4dea998ac024125d 100644 (file)
@@ -1,3 +1,37 @@
+2006-01-02  Anders Carlsson  <andersca@imendio.com>
+
+        * gdk/quartz/GdkQuartzWindow.c:
+        (-[GdkQuartzWindow canBecomeMainWindow]):
+        (-[GdkQuartzWindow canBecomeKeyWindow]):
+        Have these return TRUE
+        
+        * gdk/quartz/gdkevents-quartz.c:
+        (pointer_grab_internal):
+        Remove FIXME
+        
+        (find_child_window_by_point_helper):
+        Fix bug in offset calculation
+        
+        (find_window_for_event):
+        Use grab window toplevel when a grab is in effect
+        
+        (gdk_event_translate):
+        Don't call _gdk_event_button_generate on mouse up
+        
+        * gdk/quartz/gdkgc-quartz.c:
+        (_gdk_quartz_gc_new):
+        Fix indentation
+        
+        * gdk/quartz/gdkwindow-quartz.c:
+        (gdk_window_new):
+        Make TEMP windows borderless
+        
+        (gdk_window_hide):
+        Hide window
+        
+        (gdk_window_get_origin):
+        Implement
+        
 2006-01-02  Tor Lillqvist  <tml@novell.com>
 
        * gdk/win32/gdkwindow-win32.c
index 2365dd4a4cbd2767e3d8ac6d1492809249e3ec15..1ca8f2650f3d8c475c451e7080fcc994a1c5c768 100644 (file)
   return self;
 }
 
+-(BOOL)canBecomeMainWindow
+{
+  return YES;
+}
+
+-(BOOL)canBecomeKeyWindow
+{
+  return YES;
+}
+
 @end
index ac9eaf1315ff33e6f5c94adb3a0ce838f6c16aae..b1ef09988ac0c978572093315c0c69b77d0e5749 100644 (file)
@@ -252,7 +252,6 @@ pointer_grab_internal (GdkWindow    *window,
   pointer_grab_event_mask = event_mask;
   pointer_grab_implicit = implicit;
 
-  /* FIXME: Implement */
   return GDK_GRAB_SUCCESS;
 }
 
@@ -366,14 +365,14 @@ find_child_window_by_point_helper (GdkWindow *window, int x, int y, int x_offset
       if (x >= temp_x && y >= temp_y &&
          x < temp_x + impl->width && y < temp_y + impl->height) 
        {
-         *x_ret = x - private->x;
-         *y_ret = y - private->y;
-
+         *x_ret = x - x_offset - private->x;
+         *y_ret = y - y_offset - private->y;
+         
          /* Look for child windows */
          return find_child_window_by_point_helper (GDK_WINDOW (children->data), x, y, temp_x, temp_y, x_ret, y_ret);
        }
     }
-
+  
   return window;
 }
 
@@ -852,19 +851,19 @@ find_window_for_event (NSEvent *nsevent, gint *x, gint *y)
        GdkEventMask event_mask;
        GdkWindow *real_window;
 
-       
        if (pointer_grab_window)
          {
            if (pointer_grab_event_mask & get_event_mask_from_ns_event (nsevent)) 
              {
                int tempx, tempy;
                GdkWindowObject *w = GDK_WINDOW_OBJECT (pointer_grab_window);
+               GdkWindowObject *grab_toplevel = GDK_WINDOW_OBJECT (gdk_window_get_toplevel (pointer_grab_window));
 
                tempx = point.x;
-               tempy = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl)->height -
+               tempy = GDK_WINDOW_IMPL_QUARTZ (grab_toplevel->impl)->height -
                  point.y;
 
-               while (w != GDK_WINDOW_OBJECT (toplevel))
+               while (w != grab_toplevel)
                  {
                    tempx -= w->x;
                    tempy -= w->y;
@@ -1145,8 +1144,6 @@ gdk_event_translate (NSEvent *nsevent)
 
       append_event (event);
       
-      _gdk_event_button_generate (_gdk_display, event);
-
       /* Ungrab implicit grab */
       if (pointer_grab_window &&
          pointer_grab_implicit)
index c68e3bab26c6070a67833f9cf616ff34bcad62ab..ba216005202578ebd0850cf7af65f1e8bf42ac36 100644 (file)
@@ -120,8 +120,8 @@ _gdk_gc_quartz_get_type (void)
 
 GdkGC *
 _gdk_quartz_gc_new (GdkDrawable      *drawable,
-                  GdkGCValues      *values,
-                  GdkGCValuesMask   values_mask)
+                   GdkGCValues      *values,
+                   GdkGCValuesMask   values_mask)
 {
   GdkGC *gc;
 
index 0d6e4c4c9750ce11979d3ea2a7580406e920d9ba..f8d3fc2e5949e996d56da281f7c9a19206fec4bf 100644 (file)
@@ -296,6 +296,7 @@ gdk_window_new (GdkWindow     *parent,
       private->depth = 0;
       private->input_only = TRUE;
       draw_impl->colormap = gdk_screen_get_system_colormap (_gdk_screen);
+      g_object_ref (draw_impl->colormap);
     }
 
   if (private->parent)
@@ -315,19 +316,27 @@ gdk_window_new (GdkWindow     *parent,
                                          _gdk_quartz_get_inverted_screen_y (private->y) - impl->height,
                                          impl->width, impl->height);
        const char *title;
-       int style_mask = NSTitledWindowMask|
-         NSClosableWindowMask|
-         NSMiniaturizableWindowMask|
-         NSResizableWindowMask;
+       int style_mask;
+
+       switch (attributes->window_type) {
+       case GDK_WINDOW_TEMP:
+         style_mask = NSBorderlessWindowMask;
+         break;
+       default:
+         style_mask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask;
+       } 
 
        impl->toplevel = [[GdkQuartzWindow alloc] initWithContentRect:content_rect 
-                                                          styleMask:style_mask
-                                                            backing:NSBackingStoreBuffered defer:NO];
+                                                           styleMask:style_mask
+                                                             backing:NSBackingStoreBuffered defer:NO];
        if (attributes_mask & GDK_WA_TITLE)
          title = attributes->title;
        else
          title = get_default_title ();
 
+       if (attributes->window_type == GDK_WINDOW_TEMP)
+         [impl->toplevel setLevel:NSPopUpMenuWindowLevel];
+
        gdk_window_set_title (window, title);
 
          
@@ -488,12 +497,15 @@ gdk_window_hide (GdkWindow *window)
 
   if (impl->toplevel) 
     {
-          /* FIXME: Support hiding toplevel windows */
+      [impl->toplevel orderOut:nil];
     }
   else if (impl->view)
     {
       [impl->view setHidden:YES];
     }
+
+  gdk_pointer_ungrab (0);
+
 }
 
 void
@@ -724,10 +736,48 @@ gdk_window_get_origin (GdkWindow *window,
                       gint      *x,
                       gint      *y)
 {
+  GdkWindowObject *private;
+  int tmp_x = 0, tmp_y = 0;
+  GdkWindow *toplevel;
+  NSRect content_rect;
+  GdkWindowImplQuartz *impl;
+
   g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
 
-  /* FIXME: Implement */
-  return FALSE;
+  if (GDK_WINDOW_DESTROYED (window)) 
+    {
+      if (x) 
+       *x = 0;
+      if (y) 
+       *y = 0;
+      
+      return FALSE;
+    }
+  
+  private = GDK_WINDOW_OBJECT (window);
+
+  toplevel = gdk_window_get_toplevel (window);
+  impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl);
+
+  content_rect = [impl->toplevel contentRectForFrameRect:[impl->toplevel frame]];
+
+  tmp_x = content_rect.origin.x;
+  tmp_y = _gdk_quartz_get_inverted_screen_y (content_rect.origin.y + content_rect.size.height);
+
+  while (private != GDK_WINDOW_OBJECT (toplevel))
+    {
+      tmp_x += private->x;
+      tmp_y += private->y;
+
+      private = private->parent;
+    }
+
+  if (x)
+    *x = tmp_x;
+  if (y)
+    *y = tmp_y;
+
+  return TRUE;
 }
 
 gboolean